package com.gz.gzspringboot;

import com.gz.gzspringboot.config.GzConfig;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import javax.xml.ws.Dispatch;

/**
 * 1.创建spring容器
 * 2.加载/关联Spring容器的配置-按照注解的方式
 * 3.完成spring容器bean的创建，依赖注入
 * 4.创建前端控制器
 */
public class GzWebApplicationInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        System.out.println("startup---");
        AnnotationConfigWebApplicationContext ac =
                new AnnotationConfigWebApplicationContext();
        //在ac中注册配置类,让容器知道扫描哪些包
        ac.register(GzConfig.class);
        ac.refresh();//完成bean的配置和创建

        //创建前端控制器
        //2.让DispatcherServlet持有容器
        DispatcherServlet dispatcherServlet = new DispatcherServlet(ac);
        ServletRegistration.Dynamic registration =
                servletContext.addServlet("app", dispatcherServlet);
        //当tomcat启动时，加载dispatcherServlet
        registration.setLoadOnStartup(1);
        //拦截所有请求并进行分发处理
        //注意/和/*的区别:(1)/ 是默认它表示这个Servlet是默认的Servlet,即当匹配不到时，走默认路径
        //(2)/* 表示这个Servlet将处理以该斜杠为前缀的所有请求
        registration.addMapping("/");
    }
}
